In recent years, software structures have changed, allowing dynamic memory allocations during runtime execution of an application or program. For example, instead of static memory allocation (e.g., allocations in main memory that persists for the lifetime of the program), dynamic-memory allocation manages memory by allocating the memory from a free store (e.g., an area of memory structured for such a purpose). The library function “malloc” may be called to allocate a block of memory from the free store. The malloc function call (e.g., malloc call) allocates memory during runtime and returns a pointer to the allocated memory. When the memory is no longer needed, the pointer can be freed, which deallocates the memory so that it can be used for other purposes.
The figures are not to scale. In general, the same reference numbers will be used throughout the drawing(s) and accompanying written description to refer to the same or like parts.